#define _CRT_SECURE_NO_WARNINGS   1

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
//struct ListNode* reverseList(struct ListNode* head) {
//    struct ListNode* cur = head;
//    struct ListNode* next1 = NULL;
//    struct ListNode* rehead = head;
//
//    if (head && head->next)
//        next1 = head->next;
//    if (head)
//        head->next = NULL;
//    while (next1)
//    {
//        cur = next1;
//        next1 = next1->next;
//        cur->next = rehead;
//        rehead = cur;
//
//    }
//    return rehead;
//
//
//
//
//}


/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
// */
//struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {
//
//    struct ListNode* cur1 = list1;
//    struct ListNode* cur2 = list2;
//    struct ListNode* newhead = NULL;
//    struct ListNode* tail = NULL;
//    if (cur1 == NULL)
//        return cur2;
//    if (cur2 == NULL)
//        return cur1;
//
//
//    while (cur1 != NULL && cur2 != NULL)
//    {
//        if (cur1->val < cur2->val)
//        {
//            if (newhead == NULL)
//            {
//                newhead = cur1;
//                tail = cur1;
//                cur1 = cur1->next;
//            }
//            else {
//                tail->next = cur1;
//                tail = tail->next;
//                cur1 = cur1->next;
//
//            }
//
//        }
//        else {
//            if (newhead == NULL)
//            {
//                newhead = cur2;
//                tail = cur2;
//                cur2 = cur2->next;
//            }
//            else {
//                tail->next = cur2;
//                tail = tail->next;
//                cur2 = cur2->next;
//
//            }
//
//
//        }
//
//
//    }
//
//    if (cur1 != NULL)
//    {
//        tail->next = cur1;
//
//    }
//    else
//    {
//        tail->next = cur2;
//    }
//    return newhead;
//}